home *** CD-ROM | disk | FTP | other *** search
- /*
- * Copyright (c) 1983 Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that this notice is preserved and that due credit is given
- * to the University of California at Berkeley. The name of the University
- * may not be used to endorse or promote products derived from this
- * software without specific prior written permission. This software
- * is provided ``as is'' without express or implied warranty.
- */
-
- #if defined(LIBC_SCCS) && !defined(lint)
- static char sccsid[] = "@(#)getservbyname.c 5.4 (Berkeley) 3/7/88";
- #endif /* LIBC_SCCS and not lint */
-
- #include <netdb.h>
-
- extern int _serv_stayopen;
-
- struct servent *
- getservbyname(name, proto)
- char *name, *proto;
- {
- register struct servent *p;
- register char **cp;
-
- setservent(_serv_stayopen);
- while (p = getservent()) {
- if (strcmp(name, p->s_name) == 0)
- goto gotname;
- for (cp = p->s_aliases; *cp; cp++)
- if (strcmp(name, *cp) == 0)
- goto gotname;
- continue;
- gotname:
- if (proto == 0 || strcmp(p->s_proto, proto) == 0)
- break;
- }
- if (!_serv_stayopen)
- endservent();
- return (p);
- }
-